template <class T>class numeric_limits;
template <> class numeric_limits<bool>;
template <> class numeric_limits<char>;
template <> class numeric_limits<signed char>;
template <> class numeric_limits<unsigned char>;
template <> class numeric_limits<wchar_t>;
template <> class numeric_limits<char8_t>;
template <> class numeric_limits<char16_t>;
template <> class numeric_limits<char32_t>;
template <> class numeric_limits<short>;
template <> class numeric_limits<unsigned short>;
template <> class numeric_limits<int>;
template <> class numeric_limits<unsigned int>;
template <> class numeric_limits<long>;
template <> class numeric_limits<unsigned long>;
template <> class numeric_limits<long long>;
template <> class numeric_limits<unsigned long long>;
template <> class numeric_limits<float>;
template <> class numeric_limits<double>;
template <> class numeric_limits<long double>;